Conversation
The store was being seeded every time a section loads, resulting in stale data. Probably need a more thorough refactor, but this fix ensures the store hydrates only once per page load. This also updates the create process instance e2e test
## Summary - Nest flat config fields (`categories`, `requireCategorySelection`, `allowMultipleCategories`, `organizeByCategories`, `requireCollaborativeProposals`, `isPrivate`) under a `config` object in the process builder store, aligning the client-side shape with the server's `InstanceData.config` - Rename `FormInstanceData` → `ProcessBuilderInstanceData` and replace local `ProposalTemplate` type alias with `ProposalTemplateSchema` from `@op/common` - Add config-aware shallow merge in `setInstanceData` and the store initializer so per-section partial config updates don't clobber each other --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1213454016355586
## Summary - Gives admins a live preview of how reviewers will experience the rubric form, reducing the guesswork when configuring scoring criteria - Lays the groundwork for the full rubric builder by adopting the same split-pane layout used in the proposal template editor (blank left panel for now, participant preview on the right) - Gated behind the `rubric_builder` PostHog feature flag — production users still see the "coming soon" placeholder until the builder is ready
## Summary Adds per-criterion rationale fields so reviewers can provide written reasoning alongside their scores — matching the "Require reasoning for scores" toggle in the rubric editor designs. No backend changes needed — rationale fields are regular JSON Schema properties validated by AJV like everything else. ## Demo <img width="1707" height="1171" alt="CleanShot 2026-02-26 at 20 32 34" src="https://github.com/user-attachments/assets/6beedf98-ee0d-4516-a32a-1dbb778315ba" />
This ensures that all translation keys are properly typed against the dictionary. It makes sure that we never have translations keys that don't exist in the dictionary with translations. Typecheck now flags these situations and your IDE should also be showing it as an error. ### Example with a bad translation key <img width="515" height="137" alt="Screenshot 2026-02-26 at 13 08 04" src="https://github.com/user-attachments/assets/8964ee28-6788-4dea-b184-5a4231fb91a7" />
Needed to properly set overflow on the parent container. Also adjusted where we set `[scrollbar-gutter:stable]` which prevents layout shift when the scrollbar appears
) ## Summary - Move `ProcessPhase` type from scattered UI component definitions to a single export from `@op/api/encoders` - Replace legacy `processSchemaEncoder` with a modern phase-based format using passthrough for flexibility - Delete `apps/app/src/components/decisions/types.ts` (no longer needed) **Part 1 of 3** in the transition scheduling logic stack: 1. **This PR** — Encoder/UI type consolidation 2. `transition-scheduling-core` — Core scheduling logic 3. `transition-scheduling-tests` — Test suite ## Test plan - [ ] `pnpm typecheck` passes - [ ] `pnpm format:check` passes - [ ] No behavioral changes — pure refactoring
Adds a loading state for the Button component in @op/ui so we can have a consistent loading state experience. Also ensures that loading states don't change the size of the Button itself. https://apps-workshop-git-button-loading-state-oneproject.vercel.app/?path=/docs/button--docs <img width="266" height="663" alt="Screenshot 2026-03-03 at 17 11 00" src="https://github.com/user-attachments/assets/9e05ef0d-15e7-4766-8a60-2cd57ddbdf61" />
Support translations in the proposal listing and update the proposal template fields to support translations as well. A follow up PR will enable translations for english-speakers as well. ### AFTER <img width="1170" height="710" alt="Screenshot 2026-03-03 at 11 18 10" src="https://github.com/user-attachments/assets/f43406d4-377e-4f15-94c7-0943f0ab5e1b" /> <img width="738" height="784" alt="Screenshot 2026-03-03 at 11 26 59" src="https://github.com/user-attachments/assets/84a12dda-079c-4c7f-a4df-74a9589f0275" /> ### BEFORE <img width="1152" height="647" alt="Screenshot 2026-03-03 at 11 29 05" src="https://github.com/user-attachments/assets/69aa9afc-c11f-4157-b3ec-b76a8153fcdc" /> <img width="733" height="791" alt="Screenshot 2026-03-03 at 11 28 45" src="https://github.com/user-attachments/assets/0b20b7b3-71e9-40e8-b44a-2e60a9cd4598" />
Shows the pending invites in the invite modal for the decision invite modal. A follow up PR updates the role display to a dropdown selector. <img width="1125" height="431" alt="Screenshot 2026-03-02 at 13 40 25" src="https://github.com/user-attachments/assets/3da2d0e6-2bf9-4940-b31c-c0a3c444cfd4" /> --- - To see the specific tasks where the Asana app for GitHub is being used, see below: - https://app.asana.com/0/0/1213319501728175
Fixes the sizing on the "Add Budget" component so that it remains the same size when you focus. Also converts the currency display to better match that currency's format. We also now size the input and the Add Budget to whichever of the two are larger (placeholder text in the input vs the "Add Budget" text in the button) since this varies by locale. ### Budget entry <img width="207" height="154" alt="Screenshot 2026-03-03 at 17 47 10" src="https://github.com/user-attachments/assets/cde8079b-a091-4b80-bf5e-8dce1d49cfaf" /> <img width="372" height="297" alt="Screenshot 2026-03-03 at 17 47 17" src="https://github.com/user-attachments/assets/133505aa-b3cb-4151-be52-f323594c5969" /> <img width="391" height="317" alt="Screenshot 2026-03-03 at 17 47 35" src="https://github.com/user-attachments/assets/73a23537-f565-4959-988f-ec62109087c6" /> <img width="195" height="162" alt="Screenshot 2026-03-03 at 17 47 41" src="https://github.com/user-attachments/assets/33cedce9-6e66-48d1-8a21-8e7afb274f1c" /> ### Currency displays <img width="327" height="249" alt="Screenshot 2026-03-03 at 17 20 48" src="https://github.com/user-attachments/assets/d1ca0ce0-f167-4fc0-915b-717dc8961d85" /> <img width="404" height="251" alt="Screenshot 2026-03-03 at 17 20 54" src="https://github.com/user-attachments/assets/743ce3fc-3091-42fc-8768-a913afec0be3" /> <img width="324" height="235" alt="Screenshot 2026-03-03 at 17 20 20" src="https://github.com/user-attachments/assets/53f8fe86-3899-47c3-bc53-8e688886f3ad" /> (Swedish Krona)
Fixes race conditions in a single call that uses batched requests by caching the auth call so it is re-used for the whole of the batch. Helps to address token refresh issues for users.
## Summary Adds the rubric editor UI to the Process Builder, allowing process owners to define review criteria (scored, yes/no, text response) that reviewers use to evaluate proposals. ## What's included - **Rubric template utilities** (`rubricTemplate.ts`) — pure functions for creating, reading, and immutably updating rubric JSON Schema, with typed helpers to eliminate boilerplate - **Criterion cards** — collapsible accordion cards with drag-and-drop reordering, inline name/description editing, type switching via radio group, and scored config (max points, score labels) - **Scored config caching** — switching away from "scored" type and back restores the previous scale/labels - **Delete confirmation modal** — follows the same pattern as phases editor - **Empty state** — matches the proposal categories pattern (`LuLeaf` icon) - **Debounced auto-save** to the process builder store - **Live participant preview** of the rubric form - **Translation keys** added to all 5 language files - Gated behind `rubric_builder` feature flag ## Not included - Autosave-on-initial-load fix (planned for a separate branch) - Field-level validation on blur ## Testing Use the [preview deployment](https://app-git-rubric-editor-ui-oneproject.vercel.app/). Make sure you have a phase with "Enable proposal review" toggled on.
Contributor
|
The latest updates on your projects. Learn more about Vercel for GitHub.
|
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.